AWS Lumberyardについてメモ
概要
AWS、ゲームエンジン乗っけられるサービス始めたってよ
動かすのとかチュートリアルは割愛。
サービス区分
まずLumberyardというゲームエンジンがある。
次に、GameLiftという「LumberyardをAWS上で動かす基盤サービス」みたいなのがある。
Lumberyard
中身はCryEngine。
forkしたもので、オリジナルに対して投資はしているが買収とかではない。
Client(PC、Consumer、SmartPhone、VRとかで動く)
スマフォとVRは今後サポート。
ゲームエディタ + ゲームエンジンのオーソドックスな構成。いってみりゃ普通。
ただ、AWSとの連携を抽象化してるレイヤーがあって、強烈な部分も。
強烈な部分
Lumberyard上のノードエディタにAWS LambdaとかAWS DynamoDBとかがポンと置ける。
サービス登録とかは別途、って感じなんだろうけど(試してない)、ゲーム中に動作するノードの部分として、
1.ここにきたらDynamo上のデータをこのキーで取得
2.もし値があったらこっちのルート
3.なかったらこっちのルート
とかをノードエディタで書けるのはすごい。超強い。そして怖い。
かる~~いGUI操作の結末として大量にリクエスト流れそうなんですがそれは。
まあ慣れの問題だろきっと。
GameLift
Lumberyardを「サーバ上で特にいろいろやって」動かすための基盤サービス。
このサービスを使わないでもLumberyardをAWS上で動かすことは可能。
ざっくり次の機能と、それに対する課金体制を持つ。
・オートスケーリング
・アクティブ状態のゲームのスワップ
・ユーザーのIdentify
・ユーザーの接続、切断のAPI
・ゲームのステートの生成、破棄などのAPI(ちょっと理解が違うかもしれん)
・以上
はい、強いですね。
オートスケーリング
まーインスタンス足したり引いたり。AWSの真骨頂。
急な負荷でも大丈夫、ガンガンと、、、ガンガンと、、、
アクティブ状態のゲームのスワップ
サーバへのデプロイ時にversion値を付加し、「動作しているゲームを別versionのものに切り替えていく」といったことができるっぽい。
まーアップデートとかデグレードとかをAPI化しましたみたいな話。
ユーザーがActiveなversionへとじわじわ遷移していくのかな。試してないけど。
まあダウンタイムはないよねって話。
ユーザーのIdentify
GameLiftは上記の機能を持つにあたって、ユーザーのIdentifyを勝手にやってくれるっぽい。
もっとも「DAU1000あたりいくら」っていう課金条件があるんで、そのためのものだと思うけど。
次に書く「ユーザーの接続、切断のAPI」とかの基礎としてIdenfityがある印象。
ユーザーの接続、切断のAPI
これらのAPIが定義、提供されている。
発生時にイベントハンドラがなんか言う。
で、ところで、これらのAPI、特に接続がミソで、このタイミングでDAUベースでちょいちょい金がでていく。
ゲームのステートの生成、破棄などのAPI(ちょっと理解が違うかもしれん)
ユーザーの寿命の他に、ゲームのステートみたいなものの寿命も管理できる。
推奨されてるゲームの形状は、「マッチして短期間で解散するもの」みたいな感じで、永遠に稼働し続けるMMOみたいなものは想定していない。 このへんはドキュメントにもしつこく書いてあった。
以上
そう、以上なんだ。
接続、切断とかのAPIはある。
、、、
、、
、
えっじゃあClient-Server間のゲーム中のデータをやり取りするAPIとかはどうなってるの? っていう疑問を持った?
持つよね?? その疑問持つの俺だけじゃないよね?
無い。全くの自由なんだ。
Client(PC上で動くLumberyard) <-> Server(AWS上で動くLumberyard)
この2つのPeerのあいだの情報転送は、
接続、切断、ゲームのstate生成とか変更のAPI以外、
何にもない。
君はどんなプロトコルを使っても(多分)いい。
例えばServer側のLumberyardで全部計算して結果を動画でブロードキャスト(Do you remember SHINRA?? )してもいいし、
Client、Server双方で同様のゲームロジックを回して整合性はServer準拠、とかをやってもいい。
どんなプロトコルでもいいわけだよ。
その、、、Client側とServer側が受け入れられて、AWSに乗っけることができれば。
StartとEndだけは定義されてメソッドもハンドラも用意されているんで、、、
Cross Peerでのシンクロナイズとか、そういうのもまあ、、やろうと思えば、、できるわけだ、、、
自分で作れば、、、
Lumberyardのソースコードに関する制約
無い。
すべてオープンソース。
なので、たとえばPhotonみたいな、
「パケットの形状はこのフォーマットです」
「開けるのはServerに到達してからです」
「開いてからしか判断できません」
みたいな制約は無い。素敵だ。Unityですらこの辺は制約として持ちそうなんでアレだが。
っていうか通信部分は基礎以外本当に何も無いもんね!!!
しかも改変するのも自由(ただし再配布は禁じる。そりゃな。)
おおざっぱなLumberyardに関する制約
オンプレミスで動かしても良い。無料。
AWSで動かしても良い。これも無料。GameLiftなどの構造を利用する分にはDAU単位の課金がつく。
ほかのクラウド事業者やレンタルサーバ上で動かすのは禁止。
純粋な制約はこの一項のみ。
twitch
Lumberyardと連携。
チャットの内容をGameにフィードバックできる仕組みがありえる。
チャットからのコマンド入力みたいなもの、応援とかエフェクトとか。
ゲームに対するSlackの発展形か。
課金方法の提供
T-シャツ Amazonを介して販売 小売から配送まで
「A選手の優勝の瞬間スクリーンショッT-シャツ」とかができるわけですねすごい。
企業からしたら、商品開発の門戸が増える感じっぽい
App課金とかは従来通り。
ローカルで動かすテストキットがほしいです
一発で他人プレイヤーのログイン代替とか、テスト用のサーバ(micro)とか。
考えてみるかも。
今後?
ほかのゲームエンジン??が乗ると嬉しいな??みたいな話はあると思った。
チュートリアル
YourFirstGame っていうシリーズがあるのでやってみようぜみたいな。
感想
LumberyardはAWSに連携できる機能を内包したゲームエンジン。
GameLiftはそれを使ってGBaaS的な機能を持たせたフレームワーク。
Game Backend as a Service ? それともPlatformか?
とりあえず知ることができてよかった。